package com.tianji.remark.task;

import com.tianji.remark.service.ILikedRecordService;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@RequiredArgsConstructor
public class LikedTimesCheckTask {

    private static final List<String> BIZ_TYPES = List.of("QA", "NOTE");
    private static final int MAX_BIZ_SIZE = 30;

    private final ILikedRecordService recordService;

    /**
     * 定时任务：检查并发送点赞次数
     * 使用fixedDelay调度策略，每次任务执行完成后间隔20秒再次执行
     */
    @Scheduled(fixedDelay = 20000)
    public void checkLikedTimes() {
        // 遍历所有业务类型（QA和NOTE）
        for (String bizType : BIZ_TYPES) {
            // 调用服务层方法，读取点赞次数并发送消息
            // 参数说明：
            // bizType - 业务类型
            // MAX_BIZ_SIZE - 每次处理的最大业务数量（30）
            recordService.readLikedTimesAndSendMessage(bizType, MAX_BIZ_SIZE);
        }
    }

}